cssparser: Fix cases where we could overrun the terminating 0
authorBenjamin Otte <otte@redhat.com>
Fri, 17 Jun 2011 05:55:17 +0000 (07:55 +0200)
committerBenjamin Otte <otte@redhat.com>
Fri, 26 Aug 2011 14:26:28 +0000 (16:26 +0200)
gtk/gtkcssparser.c

index 13d63d4869305346038e963c844a665c6ef1b79e..2d6a4df3d007da34419efd087b9365dc15bcf708 100644 (file)
@@ -875,17 +875,20 @@ _gtk_css_parser_resync_internal (GtkCssParser *parser,
       case '(':
         parser->data++;
         _gtk_css_parser_resync (parser, FALSE, ')');
-        parser->data++;
+        if (*parser->data)
+          parser->data++;
         break;
       case '[':
         parser->data++;
         _gtk_css_parser_resync (parser, FALSE, ']');
-        parser->data++;
+        if (*parser->data)
+          parser->data++;
         break;
       case '{':
         parser->data++;
         _gtk_css_parser_resync (parser, FALSE, '}');
-        parser->data++;
+        if (*parser->data)
+          parser->data++;
         if (sync_at_semicolon || !terminator)
           {
             _gtk_css_parser_skip_whitespace (parser);
@@ -902,6 +905,8 @@ _gtk_css_parser_resync_internal (GtkCssParser *parser,
           }
         parser->data++;
         continue;
+      case '\0':
+        break;
       case '/':
       default:
         parser->data++;